package demo;

import java.util.Random;
import java.util.Scanner;

public class C7 {
    //双色球系统业务分析：投注号码由6个红色球号和1个蓝色球号组成。
    //红色球号码从1~33中选择(不能重复)；蓝色球号从1~16中选择
    public static void main(String[] args) {
        int [] luckNumbers=createLuckNumber();
        printArray(luckNumbers);
        //调用一个方法让用户输入七个号码
        int[] userNumbers=userInputNumbers();
        printArray(userNumbers);
        //判断中奖情况
        judge(luckNumbers,userNumbers);
    }
    public static void judge(int[] luckNumbers,int[] userNumbers){
        //判断是否中奖
        //luckNumbers=[12,23,8,16,15,32,9]
        //userNumbers=[23,13,18,6,8,33,18]
        //1.定义两个变量分别存储红球命中的个数以及蓝球命中的个数。
        int redHitNumbers=0;
        int blueHitNumbers=0;

        //2.判断红球命中了几个，开始统计。
        for (int i = 0; i < userNumbers.length-1; i++) {
            for (int j = 0; j < luckNumbers.length-1; j++) {
                if(userNumbers[i]==luckNumbers[j]){
                    redHitNumbers++;
                    break;
                }
            }
        }
        //蓝球号码是否命中了
        blueHitNumbers=luckNumbers[6]==userNumbers[6]?1:0;

        System.out.println("中奖号码是：");
        printArray(luckNumbers);
        System.out.println("您投注号码是：");
        printArray(userNumbers);
        System.out.println("您命中了几个红球"+redHitNumbers);
        System.out.println("您是否命中蓝球"+(blueHitNumbers==1?"是":"否"));

        //判断中奖情况
        if(blueHitNumbers==1&&redHitNumbers<3){
            System.out.println("恭喜您，中了五元小奖！");
        }else if (blueHitNumbers==1&&redHitNumbers==3
        ||blueHitNumbers==0&&redHitNumbers==4){
            System.out.println("恭喜您，中了10元奖");
        }else if (blueHitNumbers==1&&redHitNumbers==4
        ||blueHitNumbers==0&&redHitNumbers==5){
            System.out.println("恭喜您，中了200元奖");
        }else if (blueHitNumbers==1&&redHitNumbers==5){
            System.out.println("恭喜您，中了3000元奖");
        }else if (blueHitNumbers==0&&redHitNumbers==6){
            System.out.println("恭喜您，中了500万元奖");
        }else if (blueHitNumbers==1&&redHitNumbers==6){
            System.out.println("恭喜您，中了1000万元奖");
        }else{
            System.out.println("感谢您为福利事业做出突出的贡献！");
        }
    }

    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
        System.out.println();//换行
    }

    public static int[] userInputNumbers(){
        //a.定义一个数组存储七个号码
        int[] numbers=new int[7];
        //b.让用户录入六个红球号码
        Scanner sc= new Scanner(System.in);
        for (int i = 0; i < numbers.length-1; i++) {
            System.out.println("请输入第"+(i+1)+"个红球号码（1~33要求不重复）");
            int data=sc.nextInt();
            //c.把当前录入的数据存入地址中
            numbers[i]=data;
        }
        //单独录入一个蓝球号码
        System.out.println("请您输入蓝球号码（1~16）：");
        numbers[6]= sc.nextInt();;
        return numbers;
    }
    public static int[] createLuckNumber() {
        //a.定义一个动态初始化数组，存储七个数字
        int[] numbers = new int[7];
        //b.遍历数组，为每个位置生成对应的号码
        Random r=new Random();
        for (int i = 0; i < numbers.length-1; i++) {
            while(true) {
                int data = r.nextInt(33) + 1;//(0~32)+1
                //c.注意必须判断当前随机的这个号码之前有没有出现过，出现过要重新随机一个
                //定义前一个flag变量，默认认为data是没有重复
                boolean flag=true;
                for (int j = 0; j < i; j++) {
                    if(numbers[j]==data)
                    {
                        flag=false;
                        break;
                    }
                }
                if(flag){
                    //dta这个数据之前没有出现过，可以使用了
                    numbers[i]=data;
                    break;
                }
            }
        }
        //为第七个位置生成蓝球号码1~16
        numbers[numbers.length-1]=r.nextInt(16)+1;
        return numbers;
    }
}
